package campeonatofutebol.bean;

import java.util.ArrayList;
import java.util.List;

import campeonatofutebol.util.Config;

public class Classificacao {
	
	private String nomeClassificao;
	private List<String> conteudoTabela;
	private String url;
	
	public Classificacao(String nomeClassificacao, String url){
		this.nomeClassificao = nomeClassificacao;
		conteudoTabela = new ArrayList<String>();
		this.url = url;
	}
	
	public String getNomeCLassificacao(){
		return this.nomeClassificao;
	}
	
	public void setNomeClassificacao(String nomeClassificacao){
		this.nomeClassificao = nomeClassificacao;
	}
	
	public String getUrl(){
		return this.url;
	}
	
	public void setUrl(String url){
		this.url = url;
	}
	
	public void addNovaPosicao(String posicao){
		this.conteudoTabela.add(posicao);
	}
	
	public List<String> getConteudoTabela(){
		return this.conteudoTabela;
	}

	public void buscarTodasPosicoes() {
		this.conteudoTabela = Config.recuperaDadosHtml(this.getUrl(), ".gameTable tr");
		//formataConteudoTabela();
	}
	
	private void formataConteudoTabela() {
		int maiorTamanho = Integer.MIN_VALUE;
		for(String s: this.conteudoTabela){
			if(s.length() > maiorTamanho){
				maiorTamanho = s.length();
			}
		}
		for(int index = 0; index < this.conteudoTabela.size(); index++){
			String linha = this.conteudoTabela.get(index);
			int diferencaTamanho = (maiorTamanho - linha.length()) * 2;
			if(this.conteudoTabela.get(index).length() < maiorTamanho){
				String linhaFormatada = null;
				String[] linhaDividida = linha.split(" ");
				if(index == 0){
					diferencaTamanho = diferencaTamanho * 2;
					linhaFormatada = somaEspacos(linhaDividida[0], diferencaTamanho)
							+ linha.substring(linhaDividida[0].length() + 1);
				}
				else{
					System.out.println(linhaDividida.length + " " + conteudoTabela.get(index));
					if(linhaDividida.length <= 11){
						linhaFormatada = linhaDividida[0] + " " + somaEspacos(linhaDividida[1], diferencaTamanho)
								+ formataUltimosParametros(linha.substring(linhaDividida[0].length() + linhaDividida[1].length() + 2));
					}
					else{
						System.out.println("entrou");
						linhaFormatada = linhaDividida[0] + " " + linhaDividida[1] + " " + somaEspacos(linhaDividida[2], diferencaTamanho - 1)
								+ formataUltimosParametros(linha.substring(linhaDividida[0].length() + linhaDividida[1].length() + linhaDividida[2].length() + 3));
					}
				}
				this.conteudoTabela.set(index, linhaFormatada);
			}
			else{
				String[] lista = linha.split(" ");
				String linhaFormatada = lista[0] + " " + lista[1] + " " + formataUltimosParametros(linha.substring(lista[0].length() + lista[1].length() + 2));
				this.conteudoTabela.set(index, linhaFormatada);
			}
		}
	}
	
	private String formataUltimosParametros(String linhaFormatada) {
		String[] lista = linhaFormatada.split(" ");
		String str = "";
		for(int i = 0; i < lista.length; i++){
			if(lista[i].length() == 2){
				str = str + lista[i] + "   ";
			}
			else{
				str = str + lista[i] + "  ";
			}
		}
		return str;
	}

	private String retiraElemento(String linha) {
		String[] lista = linha.split(" ");
		if(lista.length == 12){
			try{
				int i = Integer.parseInt(lista[2]);
				return lista[0] + " " + lista[1] + " " + linha.substring(lista[0].length() + lista[1].length() + lista[2].length() + 3);
			}
			catch(Exception e){
				return linha;
			}
		}
		else if(lista.length == 13){
			return lista[0] + " " + lista[1] + " " + lista[2] + " " + linha.substring(lista[0].length() + lista[1].length() + lista[2].length() + lista[3].length() + 4);
		}
		return linha;
	}

	private String somaEspacos(String s, int i){
		String str = s;
		for(int index = 0; index < i; index++){
			str = str + " ";
		}
		System.out.println(str + ". Tamanho: " + i);
		return str;
	}

}
